﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//class Person
//{
//public:
//	virtual void BuyTicket() { cout << "买票-全价" << endl; }
//};
//
//
//class Student : public Person {
//public:
//	virtual void BuyTicket() { cout << "买票-打折" << endl; }
//};
//void Func(Person* ptr)
//{
//	// 这⾥可以看到虽然都是Person指针Ptr在调⽤BuyTicket
//	// 但是跟ptr没关系，⽽是由ptr指向的对象决定的。
//	ptr->BuyTicket();
//}
//int main() {
//	Person ps;
//	Student st;
//	Func(&ps);
//	Func(&st);
//
//	return 0;
//}
//
////以下程序输出结果是什么（）
////A : A->0 B : B->1 C : A->1 D : B->0 E : 编译出错 F : 以上都不正确
//
//class A
//{
//public:
//	virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; }
//	virtual void test() { func(); }
//};
//class B : public A
//{
//public:
//	void func(int val = 0) { std::cout << "B->" << val << std::endl; }
//};


//int main(int argc, char* argv[])
//{
//	B* p = new B;
//	p->test();
//	return 0;
//}
//class Base
//{
//public:
//	virtual void Func1();
//protected:
//	int _a = 0;
//	char _ch = 'a';
//};
//void Base::Func1() {
//	cout << "hello" << endl;
//}
//int main()
//{
//	Base b;
//	b.Func1();
//	return 0;
//}
class A
{
public:
    virtual void fA()
    {
        cout << "A::f()" << endl;
    }
};
class B
{
public:
    virtual void fB()
    {
        cout << "B::f()" << endl;
    }
};
class C :public B, public A
{
    void fA() {
        cout << "C::fA()" << endl;
    }
    void fB() {
        cout << "C::fB()" << endl;
    }
    virtual void fC() {
        cout << "C::fC()" <<endl;
    }
    virtual void fD() {
        cout << "C::fC()" << endl;
    }
};
int main(){
    A a;
    B b;
    C c;
    cout << sizeof(c) << endl;
    return 0;
}